#define  _CRT_SECURE_NO_WARNINGS 1
//#include"head.h"

//int main()
//{
//	char str1[] = "abcdef";
//	char str2[20] = "xxxxxxxxxx";
//	//str2 = str1; //error 数组名是地址, 是常量
//	strcpy(str2, str1);
//    printf("%s\n", str2);
//	//strcpy拷贝时会将源字符串的结束符'\0'也拷贝过去
//
//  //strcpy函数返回的是目标空间的起始地址
//	//源字符串必须以'\0'结束。
//	//会将源字符串中的'\0'拷贝到目标空间。
//	//目标空间必须足够大，以确保能存放源字符串。
//	//目标空间必须可修改。
//	//学会模拟实现。
//
//	return 0;
//} 


//模拟实现strcpy
//void my_strcpy(char* dest, const char* src)
//{
//    assert(dest != NULL && src != NULL);
//    while (*src != '\0')
//    {
//        *dest = *src;
//        src++;
//        dest++;
//    }
//    *dest = *src;//'\0
//    //*dest = '\0';
//}

//void my_strcpy(char* dest, const char* src)
//{
//    assert(dest != NULL && src != NULL);
//    while (*src != '\0')
//    {
//        *dest++ = *src++;//先使用再++
//    }
//    *dest = *src;//'\0
//    //*dest = '\0';
//}

//void my_strcpy(char* dest, const char* src)
//{
//    assert(dest != NULL && src != NULL);
//    while (*dest++ = *src++)
//    {
//        ;//赋值表达式，赋值表达式的返回值是赋值后的值。到'\0'时结束。
//    }
//}
//
//int main()
//{
//	char str1[] = "abcdef";
//    char str2[20] = "xxxxxxxxxx";
//    my_strcpy(str2, str1);
//    printf("%s\n", str2);
//
//	return 0;
//}

//char* my_strcpy(char* dest, const char* src)
//{
//    assert(dest != NULL && src != NULL);
//    char* ret = dest;
//    while (*dest++ = *src++)
//    {
//        ;//先使用再++
//    }
//    return ret;//返回目标空间的起始地址
//}
//
//int main()
//{
//    char str1[] = "abcdef";
//    char str2[20] = "xxxxxxxxxx";
//
//    char* p = my_strcpy(str2, str1);
//    printf("%s\n", p);
//
//    printf("%s\n", my_strcpy(str2, str1));//链式访问
//
//    return 0;
//}


//strcpy、strcat、strcmp --> 长度不受限制的函数		2个参数
//strncpy、strncat、strncmp --> 长度受限制的函数	3个参数
//strncpy
//char* strncpy(char* strDest, const char* strSrc, size_t num);
//size_t num --> 限制拷贝的长度

//int main()
//{
//    char arr1[20] = "abcdefg";
//    char arr2[20] = "xxxxxxx";
//    strncpy(arr1, arr2, 3);
//    printf("%s\n", arr1);
//
//    char arr3[] = "abc";
//    char arr4[20] = "xxxxxxx";
//    strncpy(arr4, arr3, 5); //如果拷贝的长度超过被拷贝字符串的长度，用'\0'补充
//    printf("%s\n", arr4);
//
//    return 0;
//}